﻿using System;
using System.Text.RegularExpressions;
using System.Web.Security;
using RootModel = GameStepAzure.Models;
using System.Collections.Generic;

namespace GameStepAzure.Areas.Admin.Models
{
    public static class GameStoreMapper
    {
        public static Inventario InventarioModelToEntity(RootModel.Inventario inventario)
        {

            Inventario entity = new Inventario()
            {
                Cantidad = inventario.Cantidad,
                Id = 0,
                Producto = 0,
                Productos = new Productos()
                {
                    Nombre = inventario.Producto.Nombre,
                    PathImagen = inventario.Producto.PathImagen,
                    Precio = inventario.Producto.Precio,
                    PrecioDescuento = inventario.Producto.PrecioDescuento,
                    Tipo = (int)inventario.Producto.Tipo,
                    Consola = inventario.Producto.Consola,
                    Descripcion = inventario.Producto.Descripcion,
                    Genero = inventario.Producto.Genero,

                }
            };
            return entity;
        }



        public static RootModel.Inventario InventarioEntityToModel(Inventario inventario)
        {

            RootModel.Inventario modelInventario = new RootModel.Inventario();
            modelInventario.Producto = new RootModel.Producto();
            modelInventario.Id = inventario.Id;
            modelInventario.Cantidad = inventario.Cantidad;
            modelInventario.Producto.Consola = inventario.Productos.Consola;
            modelInventario.Producto.Descripcion = inventario.Productos.Descripcion;
            modelInventario.Producto.Genero = inventario.Productos.Genero;
            modelInventario.Producto.Id = inventario.Productos.Id;
            modelInventario.Producto.Nombre = inventario.Productos.Nombre;
            modelInventario.Producto.PathImagen = inventario.Productos.PathImagen;
            modelInventario.Producto.Precio = (float)inventario.Productos.Precio;
            modelInventario.Producto.PrecioDescuento = (float)inventario.Productos.PrecioDescuento;
            modelInventario.Producto.Tipo = (RootModel.TipoProducto)inventario.Productos.Tipo;
            modelInventario.Producto.OldPath = modelInventario.Producto.PathImagen;

            return modelInventario;
        }

        public static RootModel.Producto ProductoEntityToModel(Productos producto)
        {
            RootModel.Producto result = new RootModel.Producto();

            result.Id = producto.Id;
            result.Nombre = producto.Nombre;
            result.Precio = (float)producto.Precio;
            result.Tipo = (RootModel.TipoProducto)producto.Tipo;
            result.Genero = producto.Genero;
            result.Descripcion = producto.Descripcion;
            result.PrecioDescuento = (float)producto.PrecioDescuento;
            result.Consola = producto.Consola;

            string path = producto.PathImagen;
            path = path.Substring(path.IndexOf("\\_Documentos")).Replace("\\", "/");
            result.PathImagen = path;

            return result;
        }

        public static RootModel.ProductoCarrito ProductoCarritoEntityToModel(ProductoCarrito pc)
        {
            RootModel.ProductoCarrito result = new RootModel.ProductoCarrito();

            result.Producto = ProductoEntityToModel(pc.Productos);
            result.User = Membership.GetUser();
            result.Cantidad = Convert.ToInt32(pc.cantidad);

            return result;
        }

        public static ProductoCarrito ProductoCarritoModelToEntity(RootModel.ProductoCarrito pc)
        {
            ProductoCarrito result = new ProductoCarrito();

            result.producto_id = pc.Producto.Id;
            result.user_id = new Guid(Convert.ToString(pc.User.ProviderUserKey));
            result.cantidad = pc.Cantidad;

            return result;
        }

        public static OrdenCompra OrdenCompraModelToentity(RootModel.OrdenCompra ordenModel, Guid user_id)
        {
            OrdenCompra result = new OrdenCompra();

            result.Num_Orden = 0;
            result.Fecha = DateTime.Now;
            result.DireccionEnvio = ordenModel.DireccionEnvio;
            result.MontoTotal = 0;
            result.user_id = user_id;

            return result;
        }

        public static DetalleCompra DetalleOrdenCompraToEntity(RootModel.OrdenCompra orden, RootModel.ProductoCarrito pc)
        {
            DetalleCompra detalleCompra = new DetalleCompra();

            detalleCompra.Id = 0;
            detalleCompra.id_producto = pc.Producto.Id;
            detalleCompra.Precio = pc.Producto.Precio;

            detalleCompra.OrdenCompra = new OrdenCompra()
            {
                DireccionEnvio = orden.DireccionEnvio,
                Fecha = new DateTime(),
                
            };

            return null;
        }

        public static List<Cliente.Models.DetalleCompra> EntityToDetalleCompra(List<DetalleCompra> detalles) {

            List<Cliente.Models.DetalleCompra> detallesModelo = new List<Cliente.Models.DetalleCompra>();

            foreach (DetalleCompra item in detalles)
            {
                
                detallesModelo.Add(new Cliente.Models.DetalleCompra() {NumeroOrden=item.Num_Orden,Cantidad=item.Cantidad,NombreProducto=item.Productos.Nombre,Precio=item.Precio });
                
            }

            return detallesModelo;


            
        }
    }
}